Pular para o conteúdo principal

Como detectar o toque em um objeto 3D na cena e alterar sua textura

⚠️ para que funcione corretamente é necessário que o objeto possua algum tipo de colisão ⚠️

Em sua classe Java, faça o seguinte:

public class SuaClasse extends Component {

// cria uma nova textura
public Texture textura; // selecione nas propriedades

// cria um novo Laser
private final Laser laser = new Laser();

// cria uma nova Camera, @Singleton anexa o primeiro componente do tipo Camera que encontrar na cena
@Singleton
private Camera camera;

@Override
public void start() {

}

@Override
public void repeat() {

// verificando se o primeiro toque detectado na tela é nulo e retornando o código caso seja verdadeiro
if(Input.getTouch(0) == null) return;

// Vector2 responsável por armazenar a posição do primeiro toque detectado na tela
Vector2 posicao = Input.getTouch(0).getPosition();

// a direção do raio que será disparado da camera na posição da variável "posicao"
RayDirection direcaoDoRaio = camera.screenPointRay(posicao);

// o raio que será disparado
Ray raio = new Ray(direcaoDoRaio, 0);

// o ponto de colisão do laser
LaserHit laserHit = laser.trace(raio);

// verificando se o laserHit é diferente de nulo
if(laserHit != null) {

// buscando o ModelRenderer do objeto que o laserHit detectou
ModelRenderer renderizadorDeModelo = lasetHit.getObject().findComponent(ModelRenderer.class);

// verificando se o ModelRenderer é diferente de nulo
if(renderizadorDeModelo != null) {

// alterando a textura do ModelRenderer do objeto
renderizadorDeModelo.getMaterial().setTexture("albedo", textura);
}
}
}
}